﻿//using BaseUtils.Helper;
//using BaseUtils.Logger;
//using Service.src.NW.Model;
//using Service.src.NW.UI;
//using System;
//using System.Threading;
//using System.Windows.Forms;

//namespace Service.src.Flow.JavaScript
//{

//    /// <summary>
//    /// JS事件
//    /// 
//    /// 用于通知界面
//    /// </summary>
//    public class JavaScriptEvent
//    {

//        private static readonly object _lock = new object();

//        public static void MessageSuccess(string Message)
//        {
//            _Base(JavaScriptEventEnum.MESSAGE_SUCCESS, Message);
//        }

//        public static void MessageInfo(string Message)
//        {
//            _Base(JavaScriptEventEnum.MESSAGE_INFO, Message);
//        }

//        public static void MessageError(string Message)
//        {
//            _Base(JavaScriptEventEnum.MESSAGE_ERROR, Message);
//        }

//        public static void MessageWarning(string Message)
//        {
//            _Base(JavaScriptEventEnum.MESSAGE_WARNING, Message);
//        }

//        public static void Send(JavaScriptEventEnum _event, object data)
//        {
//            _Base(_event, data.ToJson());
//        }

//        public static void Send(JavaScriptEventEnum _event, string data)
//        {
//            _Base(_event, "\"" + data + "\"");
//        }

//        private static object LockObject = new object();

//        private static void _Base(JavaScriptEventEnum _event, string data)
//        {
//            if (!AppData.AppRunSuccess)
//            {
//                return;
//            }
//            if (Monitor.TryEnter(_lock, TimeSpan.FromSeconds(1)))
//            {
//                try
//                {
//                    //WebView2Handler.View.Invoke(new Action(async () =>
//                    //{
//                    //    await WebView2Handler.View.CoreWebView2.ExecuteScriptAsync($"{_event}({data})").ConfigureAwait(false);
//                    //}));

//                    foreach (Form FormItem in Application.OpenForms)
//                    {
//                        if (FormItem is NWStudioHomeForm HomeForm)
//                        {
//                            HomeForm.ViewHandler.View.Invoke(new Action(async () =>
//                            {
//                                await HomeForm.ViewHandler.View.CoreWebView2.ExecuteScriptAsync($"{_event}({data})").ConfigureAwait(false);
//                            }));
//                        }
//                        if (FormItem is NWUIGeneratorForm GeneratorForm)
//                        {
//                            GeneratorForm.ViewHandler.View.Invoke(new Action(async ()=>
//                            {
//                                await GeneratorForm.ViewHandler.View.CoreWebView2.ExecuteScriptAsync($"{_event}({data})").ConfigureAwait(false);
//                            }));
//                        }
//                    }
//                    //WebView2HandlerTemp.UIGeneratorView2.Invoke(new Action(() =>
//                    //{
//                    //    WebView2HandlerTemp.UIGeneratorView2.CoreWebView2.ExecuteScriptAsync($"{_event}({data})");
//                    //}));
//                }
//                catch (Exception ex)
//                {
//                    LoggerService.Error($"后端推送消息失败，错误原因：{ex.Message}", ex);
//                    //Monitor.Exit(_lock);
//                }
//                finally
//                {
//                    Monitor.Exit(_lock);
//                }
//            }
//        }

//        public JavaScriptEvent() { }
//    }

//    /// <summary>
//    /// 事件类型
//    /// </summary>
//    public enum JavaScriptEventEnum
//    {
//        NULL,
//        UPDATE_FLOW_DATA,
//        UPDATE_EVENT_DATA,
//        GLOBAL_MESSAGE_NOTICE, // 全局的消息通知
//        DEVICE_LOGGER,   // 监听设备日志
//        FLOW_LOGGER,   // 流程日志
//        FLOW_COMPLETE,  // 流程结束
//        NODE_ERROR,   // 节点异常
//        NODE_LOGGER,   // 节点日志
//        NODE_STATUS,    // 节点状态
//        NODE_START,  // 节点开始执行
//        NODE_COMPLETE,  // 脚本编译错误
//        NODE_SCRIPT_COMPILE_ERROR,  // 节点脚本编译出错
//        GLOBAL_PARAM_DATA_UPDATE,  // 全局变量数据更新
//        MESSAGE_INFO,  // 消息info
//        MESSAGE_SUCCESS,  // 消息success
//        MESSAGE_ERROR,  // 消息error
//        MESSAGE_WARNING,  // 消息Warning
//    }
//}
